Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Construcción de un sistema experto de tipo probabilístico (página 2)



Partes: 1, 2

  1. Los pasos fundamentales para elaborar el sistema son los
    siguientes:

  2. Identificar los conjuntos que
    intervienen.
  3. Cargar la base de conocimiento.
  4. Calcular las probabilidades conocidas.
  5. Calcular las probabilidades
    condicionales.
  6. Identificar a que rama del árbol o conjunto,
    pertenece la característica en consulta.
  7. Actualizar la base de conocimiento.
  1. Para esto es clave determinar el número de
    particiones m disjuntas del espacio muestral y el
    numero n de eventos asociados, el espacio
    generado por estos números se pueden representar
    más fácilmente por un diagrama de árbol que
    contenga todas las posibles regiones del conjunto, así
    la forma de representar la figura 1 es la siguiente:

    Este diagrama es clave por que es una
    representación bastante clara de los conjuntos, que
    intervienen en el sistema, además hace una lista de
    todos las posibles regiones del espacio muestral por ejemplo
    la primera rama del conjunto, es la región
    , la segunda es y la
    ultima , cada uno de estos conjuntos tiene
    un cardinal.

    Todos estos conjuntos representan la base de
    conocimientos del experto, el número de conjuntos que
    debe aparecer es .

  2. Identificar los conjuntos que intervienen

    Es claro que los conjuntos ya están definidos,
    sabemos cuales son y cuantos son ahora procedemos a asignar a
    cada conjunto su cardinal, o lo mismo que cargar la base de
    conocimiento. Sea el cardinal del
    conjunto , entonces la asignación se
    hace siguiendo el siguiente esquema:

    Para k=1,2,3,…, .

  3. Cargar la base de conocimiento

    Para calcular estas probabilidades es importante
    determinar el tamaño del espacio muestral, teniendo en
    cuenta que los conjuntos que fueron descritos anteriormente,
    forman una partición del mismo, sea
    el tamaño del espacio entonces
    se puede determinar de la siguiente manera
    siguiente forma:

    Para calcular las probabilidades de cada conjunto se
    efectúa lo siguiente:

    Para k=1, 2,3,…,
    y

    Como los datos suministrados dan
    información acerca de
    las particiones, pero no brindan información acerca de
    los conjuntos en concreto, es necesario
    calcular el tamaño de los conjuntos, el tamaño de
    los se calcula sumando los conjuntos donde
    aparece de la siguiente manera:

    ,,,…,

    La probabilidad de los
    , se calcula de la siguiente forma
    , Con Para
    calcular las probabilidades de la forma
    se hace lo siguiente:

    Finalmente es así como se calculan las
    probabilidades conocidas.

  4. Calcular las probabilidades conocidas.

    En este punto del trabajo es donde se hace
    importante el uso de las probabilidades condicionales, para
    encontrarlas se hace uso de la regla Generalizada de Bayes
    que se enuncio al principio.

  5. Calcular las probabilidades
    condicionales.
  6. Clasificar a que rama del árbol o conjunto
    pertenece la consulta

Para esto solo se sigue el camino en el árbol
haciendo las preguntas, la pregunta puede estar más
relacionada dependiendo del contexto en el que se elabore el
sistema, esto se vera más detalladamente mas adelante, por
ahora y de manera general se expresara esto como:

  1. Pregunta a priori, sospecha que el elemento pertenece
    al conjunto .
  2. Pregunta sobre los hechos asociados al sistema, el
    elemento pertenece al conjuntó

De esa forma se clasifica, luego al tener identificado
que conjunto es, se retorna la probabilidad específica,
determinada por los procesos
anteriores.

  1. Actualizar la base de conocimiento

Después de todo el proceso probablistico, la
situación que se este analizando tiene que arrojar un
resultado final (posteriori), por ejemplo si se analiza un
juego de cartas hacemos todos los estudios
y generamos, las probabilidades correspondientes de todas formas
el fenómeno arroja un resultado que puede que haya sido o no
de acuerdo con las predicciones hechas por nosotros, puede que
haya dos tipos de errores uno es que el suceso ocurra cuando las
predicciones arrojaron que no, y el otro es que el suceso no
ocurra cuando los estudios arrojaron que si iba a ocurrir. De
todas formas así el suceso se haya dado o no el sistema
actualiza correspondientemente , sumando uno al conjunto que se
trato o la rama del árbol en cuestión, todo depende de
el punto de vista que le parezca mas cómodo al
lector.

Para ver como se construye el sistema experto, e
ilustrar la toma de decisiones bayesiana en
condiciones de incertidumbre, se va a tomar como base el
siguiente ejemplo.

Ejemplo "Determinar si un paciente tiene la
enfermedad adenocarcinoma gástrico"

Suponiendo que un medico por datos previos que le
suministra un paciente , tiene la sospecha que este padece
adenocarcinoma gástrico y que en función de estos datos,
estima que el paciente tiene una probabilidad de 0.7 de padecer
la enfermedad, y una del 0.3 de no padecerla, por lo tanto decide
interrogarle para tener mayor conocimiento de la enfermedad.
[1]

Gráfico 1

Para familiarizar al lector, con la construcción del ejemplo,
se tiene que lo que en el modelo general forma la
partición del espacio, o el conjunto , para el
caso m=2,luego se tiene que:

: Es el conjunto de pacientes que presentan
adenocarcinoma gástrico "área gris del dibujo".

: Es el conjunto de pacientes que no presentan
adenocarcinoma gástrico o lo mismo que

"área blanca del dibujo".

Además se tiene el evento , donde se
tiene que n =3, por lo tanto:

: Es el conjunto de pacientes presentan
dolor.

: Es el conjunto de
pacientes con perdida de peso.

: Es el conjunto de
pacientes paciente tienen vómitos.

Construcción del
sistema

1) Identificar los posibles conjuntos que intervienen
en el problema.

Para el caso como es claro ver en la representación
del espacio, ningún subconjunto de este es vació por lo
tanto los conjuntos que intervienen se pueden determinar mediante
un diagrama de árbol, como sigue:

Donde se puede ver los conjuntos que interactúan,
por ejemplo la primera rama se representa por: y la ultima por
.

2) Cargar la base de conocimiento:
Dado que se conocen los conjuntos por el paso anterior, se
asigna a cada conjunto su cardinal, en el caso de ser 0, para
algún Ai se dice que este conjunto no es relevante, y
no se incluye, para el ejemplo que estamos trabajando la base de
conocimiento se cargo en la siguiente sección del código.

Base de conocimiento del
ejemplo

Los valores de cada conjunto
representan el conjunto de conocimientos del
medico.

3) Calcular las probabilidades
conocidas
: para obtener las probabilidades condicionales
, se deben
calcular primero las probabilidades conocidas , por ejemplo para
calcular , se
efectúa el cálculo de lo siguiente
.

Esto se hace calculando la probabilidad de dichas
intersecciones de dado que ocurrió el evento , lo que en el código es:

/* P(A1/B)*/

float PA1B=0;

PA1B=(probabilidad_conjunto[0]+probabilidad_conjunto[1]+probabilidad_conjunto[2]+probabilidad_conjunto[3])/PB;;

cout<<"ttLa probabilidad de P(A1/B)
es"<<PA1B<<"n";

/* P(A1/BC)*/

float PA1BC=0;

PA1BC=(probabilidad_conjunto[10]+probabilidad_conjunto[11]+probabilidad_conjunto[8]+probabilidad_conjunto[9])/PBC;

cout<<"ttLa probabilidad de P(A1/BC)
es"<<PA1BC<<"n";

/* P(A2/B)*/

float PA2B=0;

PA2B=(probabilidad_conjunto[0]+probabilidad_conjunto[1]+probabilidad_conjunto[4]+probabilidad_conjunto[5])/PB;

cout<<"ttLa probabilidad de P(A2/B)
es"<<PA2B<<"n";

/* P(A2/BC)*/

float PA2BC=0;

PA2BC=(probabilidad_conjunto[8]+probabilidad_conjunto[9]+probabilidad_conjunto[12]+probabilidad_conjunto[13])/PBC;

cout<<"ttLa probabilidad de P(A2/BC)
es"<<PA2BC<<"n";

/* P(A3/B)*/

float PA3B=0;

PA3B=(probabilidad_conjunto[0]+probabilidad_conjunto[2]+probabilidad_conjunto[6]+probabilidad_conjunto[4])/PB;

cout<<"ttLa probabilidad de P(A3/B)
es"<<PA3B<<"n";

/* P(A3/BC)*/

float PA3BC=0;

PA3BC=(probabilidad_conjunto[10]+probabilidad_conjunto[8]+probabilidad_conjunto[12]+probabilidad_conjunto[14])/PBC;

cout<<"ttLa probabilidad de P(A3/BC)
es"<<PA3BC<<"n";

Para lo cual hace uso de los conocimientos que tiene
representados en la grafica 1.En el sistema desarrollado la base
de conocimiento inicial viene dada en la sección:

De la anterior información se tiene que:

  • Experimenten perdida de peso el 90% de los pacientes
    de los pacientes con adenocarcinoma gástrico y el 40% de
    los pacientes sin adenocarcinoma gástrico.
  • Experimentan dolor el 70% de los pacientes con
    adenocarcinoma gástrico y el 10% de los pacientes sin
    adenocarcinoma gástrico.
  • Tienen vómitos el 50% de los pacientes con
    adenocarcinoma gástrico y el 30% de los pacientes sin
    adenocarcinoma gástrico.

Datos que en el código del programa se calculan como
sigue:

/* P(A1/B)*/

float PA1B=0;

PA1B=(probabilidad_conjunto[0]+probabilidad_conjunto[1]+probabilidad_conjunto[2]+probabilidad_conjunto[3])/PB;

cout<<"ttLa probabilidad de P(A1/B)
es"<<PA1B<<"n";

/* P(A1/BC)*/

float PA1BC=0;

PA1BC=(probabilidad_conjunto[10]+probabilidad_conjunto[11]+probabilidad_conjunto[8]+probabilidad_conjunto[9])/PBC;

cout<<"ttLa probabilidad de P(A1/BC)
es"<<PA1BC<<"n";

/* P(A2/B)*/

float PA2B=0;

PA2B=(probabilidad_conjunto[0]+probabilidad_conjunto[1]+probabilidad_conjunto[4]+probabilidad_conjunto[5])/PB;

cout<<"ttLa probabilidad de P(A2/B)
es"<<PA2B<<"n";

/* P(A2/BC)*/

float PA2BC=0;

PA2BC=(probabilidad_conjunto[8]+probabilidad_conjunto[9]+probabilidad_conjunto[12]+probabilidad_conjunto[13])/PBC;

cout<<"ttLa probabilidad de P(A2/BC)
es"<<PA2BC<<"n";

/* P(A3/B)*/

float PA3B=0;

PA3B=(probabilidad_conjunto[0]+probabilidad_conjunto[2]+probabilidad_conjunto[6]+probabilidad_conjunto[4])/PB;

cout<<"ttLa probabilidad de P(A3/B)
es"<<PA3B<<"n";

/* P(A3/BC)*/

float PA3BC=0;

PA3BC=(probabilidad_conjunto[10]+probabilidad_conjunto[8]+probabilidad_conjunto[12]+probabilidad_conjunto[14])/PBC;

cout<<"ttLa probabilidad de P(A3/BC)
es"<<PA3BC<<"n";

Con base en el ejemplo, el medico va conociendo
sucesivamente los datos:

  1. Los datos iniciales antes de las preguntas que
    formula el medico.
  2. Si el enfermo tiene vómitos.
  3. Si el enfermo experimenta perdida de
    peso.
  4. Si el enfermo tiene dolor.

Con los datos que va conociendo el medico, va
determinando unas nuevas probabilidades de que el paciente tenga
la enfermedad.

El caso particular que se va a ver es el de un paciente
que inicialmente, en una exploración anterior se le
diagnostico, adenocarcinoma gástrico con una probabilidad de
0.7, pero el medico considera que esto no es suficiente ya que
tiene una probabilidad de 0.3 de equivocarse por tanto decide
hacer las preguntas mencionadas anteriormente a lo cual el
paciente del ejemplo responde lo siguiente.

  1. Probabilidad de 0.7 de tener la
    enfermedad.
  2. El paciente no presenta vómitos.
  3. El enfermo presenta perdida de peso.
  4. El enfermo tiene dolor.

Para el caso tenemos que dada una serie de síntomas
A1, A2 y A3 se determina si el paciente tiene o no
la enfermedad tal evento se ve representado por B. Para
ubicar el trabajo en el contexto la
probabilidad condicional viene dada por eventos diyuntos
relacionados en este caso tener o no adenocarcinoma gástrico
y un evento común a estos, para el caso no se tiene un
solamente un evento común si no 3, que son los síntomas
entonces la pregunta que se busca contestar es dada cualquier
combinación, posible de los síntomas poder determinar de una forma
mas acertada, que probabilidad tiene el paciente de tener la
enfermedad.

4) Calcular las probabilidades
condicionales.

Para esto se toma P(B)=0.70 que es la primera
estimación dada por el medico, con base en los síntomas
manifestados por el paciente se diría que este pertenece al
conjunto . Se calculan las probabilidades como
sigue:

Para el caso la probabilidad inicial de B es 0.7 por lo
tanto por medio de la regla de Bayes se tiene que, la
probabilidad que el paciente tenga la enfermedad, dado que no
presenta vómitos o lo que simbólicamente se escribe
como se calcula como sigue.

Por la teoría de la probabilidad
tenemos que:

Las deducciones obtenidas dan una nueva probabilidad de
que el paciente tenga adenocarcinoma gástrico, por lo tanto
la probabilidad de tener la enfermedad dado este síntoma,
sufre un cambio ya que ahora
, lo mismo su complemento estas nuevas
probabilidades son usadas para el siguiente
cálculo:

Este cálculo determina que dado que un paciente no
tiene vómitos y presenta perdida de peso su nueva
probabilidad de tener la enfermedad es 0.7895.

 

En el paso anterior se tiene que un paciente que, en un
principio se determinó que tenia, adenocarcinoma
gástrico, que además no presenta vómitos, pero
presenta perdida de peso y dolor tiene una probabilidad de 0.9634
de tener la enfermedad.

5) Clasificar a que rama del árbol o conjunto
pertenece la consulta

En el sistema se activa la selección hecha por el
usuario al responder como sigue:

//Opcion 5 ssns o Opcion 13

if((resp_0=='s'||resp_0=='n') && resp_1=='n'
&& resp_2=='s' && resp_3=='s'){

/* P1 /// P(B/A3C)*/

float PBA3C,PB1,PB1C;

/* (P(A3C/B)*P(B)) / [P(A3C/B)*P(B) +
P(A3C/BC)*P(BC)]*/

PBA3C=((1-PA3B)*(PB))/((1-PA3B)*(PB)+(1-PA3BC)*(PBC));

cout<<"ttLa probabilidad de P(B/A3C)
es"<<PBA3C<<"n";

PB1=PBA3C;

PB1C=1-PBA3C;

/* P2 /// P(B1/A2)*/

float PB1A2,PB2,PB2C;

/* (P(A2/B)*P(B1)) / [P(A2/B)*P(B1) +
P(A2/BC)*P(B1C)]*/

PB1A2=((PA2B)*(PB1))/((PA2B)*(PB1)+(PA2BC)*(PB1C));

cout<<"ttLa probabilidad de P(B1/A2)
es"<<PB1A2<<"n";

PB2=PB1A2;

PB2C=1-PB1A2;

/* P3 /// P(B2/A1)*/

float PB2A1,PB3,PB3C;

/* (P(A1/B)*P(B2)) / [P(A1/B)*P(B2) +
P(A1/BC)*P(B2C)]*/

PB2A1=((PA1B)*(PB2))/((PA1B)*(PB2)+(PA1BC)*(PB2C));

cout<<"ttLa probabilidad de P(B2/A1)
es"<<PB2A1<<"n";

PB3=PB2A1;

PB3C=1-PB2A1;

if(resp_0=='s'){

cout<<"nttDado que el doctor sospecha que usted
tiene A.G nttla probabilidad de que se encuentre enfermo
es:"<<PB3<<"n";}

Donde se puede ver como se hace el cálculo de las
probabilidades, según la selección del usuario. Como la
primera estimación se que se hace a prior es que el
paciente, tiene adenocarcinoma gástrico con una
probabilidad, de 0.7 hay otras a posteriori que se calculan en
base a los síntomas que el paciente manifiesta.

6) Actualizar la base de conocimiento

Pero el sistema no solo se queda con los datos a priori
suministrados por el medico, si no que a medida que va conociendo
nuevos casos y los resultados finales de estos a posteriori,
actualiza su propia base de conocimiento, este sistema
también lo hace en la siguiente sección del
código:

void refrescar_sistema(){

if(resultado_final=='s'){

// Opcion 1 sss

if(resp_1=='s' && resp_2=='s' &&
resp_3=='s'){

/*1 B_A1_A2_A3 */ personas_por_conjunto[0]++;

}

// Opcion 2 ssn

if(resp_1=='s' && resp_2=='s' &&
resp_3=='n'){

/*5 B_A1C_A2_A3 */
personas_por_conjunto[4]++;

}

// Opcion 3 sns

if(resp_1=='s' && resp_2=='n' &&
resp_3=='s'){

/*3 B_A1_A2C_A3 */
personas_por_conjunto[2]++;

}

// Opcion 4 snn

if(resp_1=='s' && resp_2=='n' &&
resp_3=='n'){

/*7 B_A1C_A2C_A3 */
personas_por_conjunto[6]++;

}

// Opcion 5 sns

if(resp_1=='n' && resp_2=='s' &&
resp_3=='s'){

/*2 B_A1_A2_A3C */
personas_por_conjunto[1]++;

}

// Opcion 6 nsn

if(resp_1=='n' && resp_2=='s' &&
resp_3=='n'){

/*6 B_A1C_A2_A3C */
personas_por_conjunto[5]++;

}

// Opcion 7 nns

if(resp_1=='n' && resp_2=='n' &&
resp_3=='s'){

/*4 B_A1_A2C_A3C */
personas_por_conjunto[3]++;

}

// Opcion 8 nnn

if(resp_1=='n' && resp_2=='n' &&
resp_3=='n'){

/*8 B_A1C_A2C_A3C */
personas_por_conjunto[7]++;

}

}

if(resultado_final=='n'){

// Opcion 1 sss

if(resp_1=='s' && resp_2=='s' &&
resp_3=='s'){

/*9 BC_A1_A2_A3 */
personas_por_conjunto[8]++;

}

// Opcion 2 ssn

if(resp_1=='s' && resp_2=='s' &&
resp_3=='n'){

/*13 BC_A1C_A2_A3 */
personas_por_conjunto[12]++;

}

// Opcion 3 sns

if(resp_1=='s' && resp_2=='n' &&
resp_3=='s'){

/*11 BC_A1_A2C_A3 */
personas_por_conjunto[10]++;

}

// Opcion 4 snn

if(resp_1=='s' && resp_2=='n' &&
resp_3=='n'){

/*15 BC_A1C_A2C_A3 */
personas_por_conjunto[14]++;

}

Según sea el caso.

Conclusiones

El sistema es realmente muy interesante de estudiar por
muchas razones, algunas ya fueron expuestas anteriormente, otras
se infieren al trabajar con el, en fin estos sistemas presentan una riqueza
mayor que los sistemas comunes basados en reglas, estos son muy
importantes ya que muestra las relaciones entre
eventos con carácter condicional, y
además de esto incluye con qué probabilidad puede que
se dé o no un evento, en este punto es clave el uso de la
regla de Bayes que es el eje central de este trabajo ya que
permite calcular todas las probabilidades que no conocemos, y no
solo eso también da una estructura para el desarrollo de las metodología planteada, para
la construcción del sistema. Aunque una de las mas
importantes características de este sistema es el dinamismo
de este mismo para aprender, ya que sus decisiones no solo se
soportan en la base de conocimiento original si no que a medida
que se usa y se actualiza, ésta deja de ser solo la original
propuesta por el experto, para convertirse en una base de
conocimiento afinada por la realidad o la experiencia.

Finalmente se concluye que estos sistemas, tienen un
gran potencial debido a la capacidad de explorar nuevos campos
que no se trabajaban con los sistemas tradicionales, debido a las
fortalezas que fueron ya mencionadas, pero como sabemos la
realidad es muy compleja y como todo, es posible hacer mejoras a
la forma en como trabajan estos.

Bibliografía:

[1] CASTILLO RON, ENRIQUE. Sistemas Expertos Aprendizaje e Incertidumbre,
Editorial Peraninfo. Capitulo 3 pagina 98, Madrid,1989.

[2] Walpole, Ronald &
Myers, Raymond H.& Myers Sharon. Probabilidad y
estadística. Editorial
Prentice Hall, capitulo 1, 1999.

[3] JOSEPH GIARRATANO ,GARY RILEY.Sistemas
Expertos Principios y Programación, Thomson
International
,capitulo 4, 2000

 

 

 

Autor:

Camilo Eduardo Matson Hernandez

Estudiante de último semestre del Programa de
Matemáticas de la
Fundación Universitaria Konrad Lorenz.

Dirigido por:

Ing. Pervys Rengifo Rengifo

Docente del Programa de Ing. De Sistemas de la
Fundación Universitaria Konrad Lorenz.

Bogotá – Colombia, Noviembre de
2007.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter